package
{
	import adobe.utils.CustomActions;
	import flash.display.Bitmap;
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.events.MouseEvent;
	import flash.utils.Timer;
	import flash.events.TimerEvent;
	
	/**
	 * ...
	 * @author Bruno Martins
	 */
	public class Main extends Sprite
	{
		private var pause: Timer;
		
		const NUM_CARTAS:uint = 20;
		const CARTAS_POR_LINHA:uint = 5
		
		private var ar_cartas:Array = new Array();
		private var ar_cartasescolhidas: Array = new Array();
		
		public function Main():void
		{
			
			criarCartas();
			embaralharCartas();
			colocarCartas();			
			addEventListener(MouseEvent.CLICK, click)
			
		}
		
		private function click(e:MouseEvent):void 
		{			
			var cartaescolhida: Carta = e.target as Carta;
			//verifica se a carta já foi pega e adiciona no array se nao foi pega
			if (ar_cartasescolhidas.indexOf(cartaescolhida) == -1)
			{
				trace("adicionada carta no array")
				ar_cartasescolhidas.push(cartaescolhida);
				cartaescolhida.trocarImagem(true);
			}
			if (ar_cartasescolhidas.length == 2)
			{
				pause = new Timer(1000, 1);
				pause.start();
				if (ar_cartasescolhidas[0].id == ar_cartasescolhidas[1].id)
				{					
					pause.addEventListener(TimerEvent.TIMER_COMPLETE, removerCartas)
				}
				else
				{
					pause.addEventListener(TimerEvent.TIMER_COMPLETE, resetarCartas)					
				}
				
				
			}
			
		}
		
		private function resetarCartas(e:TimerEvent):void 
		{
			trace("cartas diferentes");
			ar_cartasescolhidas[0].trocarImagem(false);
			ar_cartasescolhidas[1].trocarImagem(false);
			ar_cartasescolhidas = new Array();
		}
		
		private function removerCartas(e:TimerEvent):void 
		{
			trace("CARTAS IGUAIS");
			ar_cartasescolhidas[0].removeEventListener(MouseEvent.CLICK, click);
			ar_cartasescolhidas[1].removeEventListener(MouseEvent.CLICK, click);
			removeChild(ar_cartasescolhidas[0]);
			removeChild(ar_cartasescolhidas[1]);
			ar_cartasescolhidas = new Array();
		}
		
		private function engine(e: Event):void
		{
			for (var i:uint = 0; i < NUM_CARTAS; i++)
			{
				if (ar_cartas[i].escolhida == true)
				{
					ar_cartasescolhidas.push(ar_cartas[i]);
				}
			}
			
			if (ar_cartasescolhidas[0].id == ar_cartasescolhidas[1].id)
			{
				
			}
			
		}
		
		private function colocarCartas():void
		{
			for (var i:uint = 0; i < NUM_CARTAS; i++)
			{
				addChild(ar_cartas[i])
				ar_cartas[i].x = 5 + (ar_cartas[i].width + 5) * (i % CARTAS_POR_LINHA);
				ar_cartas[i].y = 5 + (ar_cartas[i].height + 5) * (Math.floor(i / CARTAS_POR_LINHA));
			}
		}
		
		/**
		 * insere 20 cartas em ar_cartas e depois randomiza tudo
		 */
		private function criarCartas():void
		{
			var carta:Carta;
						
			for (var i:uint = 0; i < NUM_CARTAS; i++)
			{
				ar_cartas.push(carta = new Carta(Math.floor(i / 2)));
			}
		}
		
		private function embaralharCartas():void
		{
			var swap: uint;
			var tmp: Carta;
			for (var i:uint = NUM_CARTAS - 1; i > 0; i--)
			{
				swap = Math.floor(Math.random() * i);
				tmp = ar_cartas[i];
				ar_cartas[i] = ar_cartas[swap];
				ar_cartas[swap] = tmp;
			}
			//trace("Minhas cartas embaralhadas: " + ar_cartas);
		}
	}
}